/*
 *      elsass.cpp
 *      
 *      Copyright 2008 AL <skylark@skylark-desktop>
 */

/* TODO-lista:
 * 
 * Vaihe 1: alueiden simulointi
 * ============================
 * ENTITY: infoiteraattori jolla käydä läpi infosetit ja tulostaa ne
 * ENTITY: testiohjelma, ja tietorakenteen debuggitulostus;
 * INFOSET: tee assignable-funktiot
 * INFOSET: hakufunktiot (nyt setistä ei saa mitään ulos!)
 * tee ENTITY-luokka loppuun(?)
 * AREA-entiteetti
 * hierarkia areaan
 * yksinkertainen aluegrafiikka
 * GUI, area-visualisointi, alueen valinta
 * tiedon visualisointi ja tarkempi tarkastelu area-entiteeteistä
 * area/vedenvirtauksen mallinnus
 *
 * Vaihe 2: objektittoman maailman kokonaissimolointi
 * ==================================================
 * sääsimulointi
 * area/kasvillisuuden kasvun mallinnus, sukkessio
 * 
 * Vaihe 3: kasvit ja kivet mukaan eläimettömään simulaatioon
 * ==========================================================
 * objektit
 * kaksisuuntaiset linkit
 * liikemekaniikka ja fysiikkakirjastointegraatio
 * 
 * Vaihe 4: eläinten perusta
 * =========================
 * eläin-entiteetti
 * action
 * mekaniikka
 * tiedonkeruu
 * kauko-ohjaus
 * applyTime, elinkaari, synnytys
 * anturitiedon mallinnus
 * anturitiedon visualisointi ja browsing!
 *
 * Vaihe 5: AI
 * ===========
 * reaktiivinen AI, vaistot...
 * päättely...
 * periytyvyys...
*/



#include <ClanLib/core.h>
#include <ClanLib/display.h>
#include <ClanLib/gl.h>
#include <ClanLib/mikmod.h>
#include <ClanLib/sound.h>
#include <cstdlib>

#include "elsassGUI.h"
#include "elsass.h"

Elsass app;

int Elsass::main(int argc, char** argv)
{
	srand(clock());
	World w;

	if (w.getStatus() == sysRunnable)
	{
		ElsassGUI gui(&w);
		gui.run();
	}
	else
	{
		std::cout << "ELSASS::Error: World not runnable." << std::endl;
	}
    return 0;
}


float Elsass::random(float min, float max)
{
	return min + ((float)rand()/(float)RAND_MAX)*(max-min);
}
